package com.cqut.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.cqut.dto.SignUpManagerDTO;
import com.cqut.dto.TeamMemberDTO;

public interface SignUpManagerMapperExtra {
	List<Map<String, Object>> findStateName();

	List<Map<String, Object>> findState();
	
	List<Map<String, Object>> findSignUpListWithLimit(
			@Param("competeName") 
			String competeName, 
			@Param("stateName")
			String stateName, 
			@Param("state")
			String state,
			@Param("start")
			int start,
			@Param("end")
			int end);
	
	List<Map<String, Object>> findPersonsListWithLimit(
			@Param("competeName")
			String competeName,
			@Param("stateName")
			String stateName, 
			@Param("state")
			String state,
			@Param("start")
			int start,
			@Param("end")
			int end);

	long findCountByLimit(
			@Param("competeName")
			String competeName, 
			@Param("stateName")
			String stateName, 
			@Param("state")
			String state);

	int passSignUpMens(
			@Param("passIds")
			String[] passIds);

	List<Map<String, Object>> findMainsWithLimit(
			@Param("competeName")
			String competeName,
			@Param("stateName")
			String stateName, 
			@Param("state")
			String state,
			@Param("start")
			int start,
			@Param("end")
			int end);

	List<Map<String, Object>> findTeachersWithLimit(
			@Param("competeName")
			String competeName,
			@Param("stateName")
			String stateName, 
			@Param("state")
			String state,
			@Param("start")
			int start,
			@Param("end")
			int end);

	int backSignUpMens(
			@Param("backIds")
			String[] backIds);

	Map<String, Object> findSignUpIdDetail(
			@Param("signUpId")
			String signUpId);

	List<Map<String, Object>> findTeacherDetail(
			@Param("signUpId")
			String signUpId);

	List<Map<String, Object>> findMainDetail(
			@Param("signUpId")
			String signUpId);

	List<Map<String, Object>> findMenberDetail(
			@Param("signUpId")
			String signUpId);

	void addApplication(SignUpManagerDTO signUpManagerDTO);

	void addTeam(TeamMemberDTO teamMemberDTO);

	List<Map<String, Object>> findMemberList(
			@Param("signUpId")
			String signUpId,
			@Param("start")
			int start,
			@Param("end")
			int end);

	long findMemberCount(
			@Param("signUpId")
			String signUpId);

	void addGrouper(TeamMemberDTO teamMemberDTO);
}
